-- 我艹特么的cmake，艹tm的交叉编译环境变量，前者时傻逼，后者是污染，艹
-- target("demo")
--     set_kind("binary")
--     add_files("*.cpp")  -- 你的源码文件
--     set_plat("linux")    -- 显式指定为 Linux 平台
--     set_arch("x86_64")   -- 显式指定为 x86_64 架构

-- local sdk_root = "~/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/SDK/sysroots"

-- 项目名称
target("stm32mpu_demo_arm")
    -- 基础配置
    set_kind("binary")
    set_languages("c11", "cxx17")

    -- 关键配置：通过交叉编译前缀指定工具链
    set_plat("linux")
    set_arch("armv7")  -- 必须显式指定架构

    -- 配置交叉编译工具链前缀（核心修正）
    set_toolchains("gcc", {cross = "arm-ostl-linux-gnueabi-"})  -- 仅指定前缀

    -- 指定sysroot路径
    add_cflags("--sysroot=~/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi")
    add_ldflags("--sysroot=~/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi")

    -- 添加编译器路径到PATH环境变量
    add_runenvs("PATH", "~/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/SDK/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi")

    -- 编译选项
    add_cflags(
        "-mthumb",
        "-mfpu=neon-vfpv4",
        "-mfloat-abi=hard",
        "-mcpu=cortex-a7",
        "-O2",
        "-pipe",
        "-g",
        "-feliminate-unused-debug-types"
    )

    -- 链接选项
    add_ldflags(
        "-L~/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/lib",
        "-Wl,-O1",
        "-Wl,--hash-style=gnu",
        "-Wl,--as-needed"
    )

    -- 源文件配置（根据实际情况修改）
--     add_files("*.c")
    add_files("*.cpp")

    -- 添加构建后自动复制到桌面
    after_build(function (target)
        -- 获取生成的可执行文件路径
        local targetfile = target:targetfile()
        -- 桌面路径（根据你的系统语言选择其中一个）
        local desktop_path = "~/Desktop/"  -- 英文系统
        -- local desktop_path = os.homedir() .. "/桌面/"  -- 中文系统
        -- 创建桌面目录（如果不存在）
        os.mkdir(desktop_path)
        -- 复制文件（带权限保持）
        os.cp(targetfile, desktop_path)
        -- 打印提示信息
        cprint("${bright green}Executable copied to desktop: ${clear}%s", path.join(desktop_path, path.filename(targetfile)))
    end)